home *** CD-ROM | disk | FTP | other *** search
AMOS Source Code | 1996-01-17 | 3.7 KB | 138 lines |
- ' ************************************* Commands used:
- ' * * =Aga Detect
- ' * Amcaf Examples * Imploder Load
- ' * ShowAGAPic V1.0 *
- ' * Written by Chris Hodges *
- ' * *
- ' *************************************
- '
- ' Some procedures to display lores/hires (interlaced) 256 colour
- ' graphics. Use the Iff2Raw program to convert the iff pictures
- ' into the format the program needs.
- '
- If Extension_8_1712 =0 Then Print "You don't have AGA! Sorry guy!" : Stop
- SHOAGAPIC["data/MyBootLogo",640,512,$8004]
- End
- Procedure SHOAGAPIC[FIL$,WX,WY,MDE]
- Extension_8_0EA2 FIL$+".raw",-8
- Extension_8_0EA2 FIL$+".col",10
- Reserve As Chip Work 9,1024+32
- DY=$28 : DX=$80
- BITMAP=Start(8)
- BSIZE=(WX/8)*WY
- CMAP=Start(9)
- Copper Off
- Cop Reset
- Cop Move $100,$200
- Cop Wait $FE,$FF
- Cop Swap
- Cop Reset
- If MDE and $4
- Cop Movel $108, Extension_8_0946(WX/8)+WX/8 : Rem BPL1MOD BPL2MOD
- Else
- Cop Movel $108,0
- End If
- Cop Movel $102,0 : Rem BPLCON1 BPLCON2
- Cop Move $8E,DX+1+DY*$100 : Rem DIWSTRT
- If MDE and $8000
- If MDE and 4
- Cop Move $90,((DX+WX/2+1) and $FF)+((DY+WY/2) and $FF)*$100 : Rem DIWSTOP
- Else
- Cop Move $90,((DX+WX/2+1) and $FF)+((DY+WY) and $FF)*$100 : Rem DIWSTOP
- End If
- Else
- If MDE and 4
- Cop Move $90,((DX+WX+1) and $FF)+((DY+WY/2) and $FF)*$100 : Rem DIWSTOP
- Else
- Cop Move $90,((DX+WX+1) and $FF)+((DY+WY) and $FF)*$100 : Rem DIWSTOP
- End If
- End If
- Cop Move $92,$38 : Rem DDFSTRT
- Cop Move $94,$D0 : Rem DFFSTOP
- For A=0 To 7
- Cop Movel $120+A*4,Start(9)+1024
- Next
- ' High-Colour Bits
- CMAPADR= Extension_8_11E0
- For A=0 To 7
- Cop Move $106,A*$2000
- For B=0 To 31
- Cop Move $180+B*2,0 : RemRrggbb To Rgb(Leek(CMAP+B*4+A*128))
- Next
- Next
- ' Low-Colour Bits.
- For A=0 To 7
- Cop Move $106,A*$2000+$200
- For B=0 To 31
- Cop Move $180+B*2,0 : RemRrggbb To Rgb((Leek(CMAP+B*4+A*128) and $F0F0F)*16)
- Next
- Next
- Cop Move $106,0
- ' Bitplanepointer
- BPP= Extension_8_11E0
- For A=0 To 7
- Cop Movel $E0+A*4,BITMAP+BSIZE*A
- Next
- ' FMODE!
- If MDE and $8000
- Cop Move $1FC,1
- Else
- Cop Move $1FC,0
- End If
- ' Turn Screen on.
- Cop Move $100,$210+(MDE and $8804)
- ' Cop Move $100,$C204
- ' DMA on.
- Cop Move $96,$8180 : Rem DMACON
- Cop Swap
- Break Off
- STE=0 : TIMOUT=0
- Repeat
- If STE<255
- AGAFADECMAP2[CMAP,Start(10)]
- Inc STE
- WRITEAGACMAP[CMAP,CMAPADR]
- Else
- Inc TIMOUT
- End If
- AD=BPP+2
- Wait Vbl
- If MDE and $4
- Extension_8_0346 50
- LACE=(Deek($DFF004) and $8000)<>0
- For A=0 To 7
- Doke AD, Extension_8_0946(BITMAP+BSIZE*A-(WX/8)*LACE) : Add AD,4
- Doke AD,BITMAP+BSIZE*A-(WX/8)*LACE : Add AD,4
- Next
- End If
- MK=Mouse Key
- Until MK or TIMOUT>600
- For AA=0 To STE
- AGAFADECMAP[CMAP]
- WRITEAGACMAP[CMAP,CMAPADR]
- AD=BPP+2
- Wait Vbl
- If MDE and $4
- Extension_8_0346 50
- LACE=(Deek($DFF004) and $8000)<>0
- For A=0 To 7
- Doke AD, Extension_8_0946(BITMAP+BSIZE*A-(WX/8)*LACE) : Add AD,4
- Doke AD,BITMAP+BSIZE*A-(WX/8)*LACE : Add AD,4
- Next
- End If
- Next
- Copper On
- Break On
- Sprite Off : Hide On
- For A=0 To 4 : Doke $DFF1FC,0 : Wait Vbl : View : Next
- Erase 8 : Erase 9 : Erase 10 : Sprite Off
- End Proc
- Procedure AGAFADECMAP2[CMPADR,TARGET]
- ' COMPILED PROCEDURE -- can't convert this to AMOS code
- End Proc
- Procedure AGAFADECMAP[CMPADR]
- ' COMPILED PROCEDURE -- can't convert this to AMOS code
- End Proc
- Procedure WRITEAGACMAP[CMPADR,COPADR]
- ' COMPILED PROCEDURE -- can't convert this to AMOS code
- End Proc